const fs = require("fs");
const path = require("path");
const { mergeAssFiles, mergeAssFilesWithWordPriority } = require("../src/utils/assMerger");

// 测试ASS文件合并功能
function testAssMerge() {
  try {
    // 定义输入和输出文件路径
    const mainAssFile = path.join(__dirname, "../temp/srt/16.ass");
    const wordAssFile = path.join(__dirname, "../temp/srt/16_words.ass");
    const outputFile = path.join(__dirname, "../temp/srt/merged_test.ass");
    const outputFile2 = path.join(__dirname, "../temp/srt/merged_test_priority.ass");

    // 检查输入文件是否存在
    if (!fs.existsSync(mainAssFile)) {
      console.error(`主字幕文件不存在: ${mainAssFile}`);
      return;
    }

    if (!fs.existsSync(wordAssFile)) {
      console.error(`单词字幕文件不存在: ${wordAssFile}`);
      return;
    }

    // 执行合并操作（普通合并）
    console.log("开始合并ASS文件...");
    console.log(`主字幕文件: ${mainAssFile}`);
    console.log(`单词字幕文件: ${wordAssFile}`);
    console.log(`输出文件: ${outputFile}`);

    mergeAssFiles(mainAssFile, wordAssFile, outputFile);

    // 检查输出文件是否存在
    if (fs.existsSync(outputFile)) {
      console.log("ASS文件合并成功!");

      // 显示文件大小信息
      const mainStats = fs.statSync(mainAssFile);
      const wordStats = fs.statSync(wordAssFile);
      const mergedStats = fs.statSync(outputFile);

      console.log(`主字幕文件大小: ${mainStats.size} 字节`);
      console.log(`单词字幕文件大小: ${wordStats.size} 字节`);
      console.log(`合并后文件大小: ${mergedStats.size} 字节`);
      console.log(`预期大小范围: ${mainStats.size + wordStats.size - 1000} - ${mainStats.size + wordStats.size + 1000} 字节 (考虑重复部分)`);
    } else {
      console.error("ASS文件合并失败，输出文件未创建");
    }

    // 执行合并操作（单词字幕优先合并）
    console.log("\n开始使用单词字幕优先方式合并ASS文件...");
    console.log(`输出文件: ${outputFile2}`);

    mergeAssFilesWithWordPriority(mainAssFile, wordAssFile, outputFile2);

    // 检查输出文件是否存在
    if (fs.existsSync(outputFile2)) {
      console.log("ASS文件(单词字幕优先)合并成功!");

      // 显示文件大小信息
      const mergedStats2 = fs.statSync(outputFile2);
      console.log(`合并后文件大小: ${mergedStats2.size} 字节`);
    } else {
      console.error("ASS文件(单词字幕优先)合并失败，输出文件未创建");
    }
  } catch (error) {
    console.error("测试过程中发生错误:", error.message);
    console.error(error.stack);
  }
}

// 执行测试
testAssMerge();
